package com.ocm.tourism.core.dao;

import java.util.List;

import com.ocm.tourism.core.domain.Advertisement;
import com.ocm.tourism.core.domain.Distance;
import com.ocm.tourism.core.domain.Hotel;
import com.ocm.tourism.core.domain.MapInfo;
import com.ocm.tourism.core.domain.Room;
import com.ocm.tourism.core.domain.SaleOff;
import com.ocm.tourism.core.model.FieldCriteria;
import com.ocm.tourism.core.model.SearchCriteria;

public interface HotelDao extends GenericDao<Hotel> {
   long count();

   long count(long participantId);

   List<Hotel> findAll();

   List<Hotel> findAll(List<Long> hotelIds);

   List<Hotel> findHotels(List<FieldCriteria> criterias);

   List<Hotel> findHotels(SearchCriteria searchCriteria,int firstResult, int maxResults);

   List<Hotel> findAll(int firstResult, int maxResults);

   List<Hotel> findAll(int firstResult, int maxResults, long participantId);

   List<Hotel> findAdvs(int firstResult, int maxResults);

   long countAdvs();

   long countRooms(long hotel);

   Room findRoom(long room);

   List<Room> findAllRooms(long hotel);

   List<Room> findAllRooms(long hotel, int firstResult, int maxResults);

   Advertisement findAdvertisement(long advertisement);

   long countSaleOffs(long hotel);

   SaleOff findSaleOff(long saleoffId);

   List<SaleOff> findSaleOffs(long hotel, int firstResult, int maxResults);

   List<Distance> findDistances(long hotel);

   MapInfo findMap(long hotel);
}
